
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>springcloud相对于单体服务有什么优缺点？ - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>springcloud相对于单体服务有什么优缺点？ - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">对比</div>
          <div class="card-question">单体架构和微服务架构在设计复杂性、模块间调用方式和适用场景上有何主要区别？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">对比</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">单体架构设计简单，模块间是本地调用，适合小型系统（如ERP）；而微服务架构设计非常复杂，服务之间是远程调用，适合大型的、用户多的系统，便于后期业务扩展和集群。</div>
          </div>
          <div class="card-source">来源: 文档中「单体架构」和「微服务架构」部分</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">单体架构存在哪些核心缺点，尤其是在故障处理和系统扩展方面？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">单体架构的核心缺点是模块之间严重耦合，一个模块的故障可能导致整个项目不可用。此外，它在扩展方面不够灵活，通常只能做水平的集群部署。</div>
          </div>
          <div class="card-source">来源: 文档中「单体架构」部分</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">微服务架构如何通过“服务拆分”和“水平扩展”来提升系统的可扩展性？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">通过将单体应用拆分为多个微服务（服务拆分），可以将不同功能模块分开管理和扩展，例如用户服务、订单服务可以独立扩展。同时，每个微服务都可以独立部署并通过增加实例来进行水平扩展，以应对高流量或负载变化。</div>
          </div>
          <div class="card-source">来源: 优点 > 1. 可扩展性</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">在微服务架构中，“灵活的技术栈”具体体现在哪两个方面？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">主要体现在两个方面：1. 技术多样性，每个微服务可以根据其功能需求选择最合适的技术栈（如Java, Python等）。2. 独立升级，可以独立地对每个微服务进行版本升级和部署，而不会影响到其他服务。</div>
          </div>
          <div class="card-source">来源: 优点 > 2. 灵活的技术栈</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">微服务架构是如何实现“故障隔离”的？文档中提到了哪些具体的容错工具？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">通过将应用拆分为多个小服务，单个服务的故障不会导致整个系统的崩溃，从而实现了服务隔离，提高了系统的稳定性和可用性。文档中提到的容错机制工具有 Hystrix 和 Resilience4j。</div>
          </div>
          <div class="card-source">来源: 优点 > 3. 故障隔离</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">模式</div>
          <div class="card-question">微服务架构是如何促进更好的团队组织和协作的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">模式</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">它允许不同的团队独立开发和维护各自的微服务，实现了“团队自治”，提高了工作效率。同时，通过明确定义“服务契约”和 API，使得团队之间的协作变得更加清晰和可靠。</div>
          </div>
          <div class="card-source">来源: 优点 > 5. 更好的组织和团队协作</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">挑战</div>
          <div class="card-question">为什么数据一致性是微服务架构中一个严峻的挑战？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">挑战</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">因为在微服务架构中，每个服务可能拥有自己的数据库，这与单体应用中数据集中在一个数据库不同。这导致了数据一致性和事务管理的复杂性大大增加，需要采用分布式事务管理或最终一致性等策略来处理。</div>
          </div>
          <div class="card-source">来源: 缺点 > 2. 数据一致性</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">挑战</div>
          <div class="card-question">微服务架构在部署和运维方面会带来哪些复杂性？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">挑战</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">复杂性主要体现在：1. 部署管理，每个微服务需要独立部署，增加了处理服务依赖、版本兼容性和环境配置的难度。2. 配置管理，每个服务可能有不同的配置，管理和维护这些分散的配置比单体应用更复杂。</div>
          </div>
          <div class="card-source">来源: 缺点 > 3. 部署和运维复杂性</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">挑战</div>
          <div class="card-question">微服务架构会引入哪两种主要的性能开销？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">挑战</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">微服务架构会引入两种主要的性能开销：1. 网络开销，服务间的通信通过网络进行，相比方法调用会产生更高的延迟。2. 序列化和反序列化开销，跨服务调用时对数据的处理会增加 CPU 和内存的消耗。</div>
          </div>
          <div class="card-source">来源: 缺点 > 4. 性能开销</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
